package palindrome;

import java.util.Scanner;

/**
 * 回文数
 */
//“回文字符串"是一个字符串。如: abcdefgbgfedcba，
// 这个字符串从前往后正读是abcdefgbgfedcba，从后往前倒读也是abcdefgbg样，
// 所以这个字符串就是回文。
// 题目:请用java给出算法，验证某个宇符串是否是回文宇符串。

public class Palindrome {
    public static void main(String[] args) {
        System.out.println("请输入要判断的字符串:");
        Scanner scanner = new Scanner(System.in);
        String str = scanner.nextLine();

//方法一:
        {        //用stringBuilder处理字符串
            StringBuilder stringBuilder = new StringBuilder(str);
            String strReadBackwards = stringBuilder.reverse().toString();
            if (str.equals(strReadBackwards)) {
                System.out.println("您输入的字符串:" + str + ",是回文字符串");
            } else {
                System.out.println("您输入的字符串:" + str + ",不是回文字符串");
            }
        }



//方法一:
        {
            //末端坐标
            int lastIndex = str.length() - 1;
            //初始左下标
            int leftIndex = 0;
            //初始右下标
            int rightIndex = lastIndex;
            for (int i = 0; i < str.length() / 2; i++) {
                leftIndex = i;
                rightIndex = lastIndex - i;
                if (str.charAt(leftIndex) != str.charAt(rightIndex)) {
                    System.out.println("您输入的字符串:" + str + ",不是回文字符串");
                    return;
                }
            }
            //能走完循环,证明都前后读都相同
            System.out.println("您输入的字符串:" + str + ",是回文字符串");
        }


    }
}
